#pragma once

#ifdef WIN32
#ifdef DTL_PLUGIN_SHARED_LIBS_EXPORT
#define pde_export __declspec(dllexport)

#else 
#define pde_export __declspec(dllimport)
#endif
#endif

namespace pde {
	#define SetInnerMacro(type, var_name)\
	public:\
	void set_##var_name(const type& var_name){var_name##_ = var_name;}


	#define VarMacro(type, var_name)\
	protected:\
	type var_name##_{};\

	#define GetInnerRefMacro(type, var_name)\
	public:\
	type&  get_##var_name(){return var_name##_;}\

	#define GetInnerConstRefMacro(type, var_name)\
	public:\
	const type&  get_##var_name()const{return var_name##_;}\

	#define GetInnerMacro(type, var_name)\
	GetInnerRefMacro(type, var_name)\
	GetInnerConstRefMacro(type, var_name)




	#define SetGetMacro(type, var_name)\
	VarMacro(type, var_name)\
	GetInnerMacro(type, var_name)\
	SetInnerMacro(type, var_name)
}


